The invention relates generally to the field of structural software testing tools. More specifically, the invention defines both an instrumentation method that increases software testability, as well as an implementation of a test driver that provides the mechanism for individually testing each software component as the software component is developed.
Quality assurance of software products is a specialized segment of the software industry. Software testing products that provide analyses and estimations of the quality of a software product are widely available. Within the set of such widely available products, many different test methods are defined and implemented to verify product quality. Each product or test implementation varies in the type and range of tests performed by it, from very broad to very specific. Test products also vary from one to another in their specific implementation of a test methodology.
In general, there are two high level categories of software testing products. These areas are functional, or black box, testing; and structural, or white box, testing. Functional testing compares test program behavior against a set of requirements. Structural testing compares test program behavior against the intended behavior of the source code.
A primary concern within the practice of structural testing, is the ability to test 100% of the product code. This test parameter is referred to as "code coverage". Code Coverage becomes increasingly more important as the role of the software product being developed comes closer to "mission critical".
Within the telecommunications industry, where systems are designed to operate non-stop, the ability to verify, and prove, the quality of a software product, prior to placing it in service, is critical. While software testing products are available that will report code coverage parameters, and software testing methods are available to improve those coverage parameters, what is needed is a product or methodology that guarantee absolute 100% code coverage as part of software quality assurance. Present methodologies rely on an ad hoc sequence of writing tests and measuring code coverage numbers, and then repeating the process until acceptable code coverage is obtained.